<?xml version="1.0" encoding="UTF-8"?>

<!-- 
  Скрипт сборки extlib внешней библиотеки переносом *.jar/*.zip библиотек в целевую директорию.
  
  Сборка внешней библиотеки состоит в переносе всех *.jar/*.zip файлов из корня плагина в целевую директорию

  FIXME 2020-12-5 сейчас есть следующие проблемы
    1. "комбинированные" плагины - которые содержат одновременно *.jar и НАШ исходный код
    2. в некторых плагинах *.jar/*.zip файлы не в корне, а в поддиректориях.
    Надо:
    1. Разделить плагины на оболочку над внешними *.jar файлами (в extlibs) и нашим кодом в core
    2. Все внешние *.jar файлы размещать в корне плагина 
    
  Предусловия:
    1. Скрипт должен запускаться с задачей ant, с указанием dir="" директории плагина.
    2. К моменту запуска скрипта должен быть прочитан файл свойств ts-build-commons.properties
    3. Должно быть выставлено свойство ts-dest-dir-libs
-->

<project name="*-lib.jar builder" default="build-lib-jar">

  <!-- название проекта=директории размещения JAR-файлов библиотеки -->
  <basename file="${basedir}" property="project.name" />
  <property name="lib.jar" value="${project.name}-lib.jar" />
  
  <tstamp>
    <format property="TODAY" pattern="yyyy-MM-dd HH:mm:ss" />
  </tstamp>

  <target name="build-lib-jar" description="Копирование *.jar файлов">
    <jar destfile="${ts-dest-dir-libs}/tmp-${lib.jar}" duplicate="preserve">
      <manifest>
        <attribute name="Application-Name" value="${ts.app.name}" />
        <attribute name="Company-Name" value="${ts.company-name}" />
        <attribute name="TS-Unit" value="${project.name}" />
        <attribute name="TS-Version" value="${ts.app.version}" />
        <attribute name="Built-Date" value="${TODAY}" />
        <!-- 2022-08-24 mvk source: https://github.com/infinispan/infinispan-quarkus/issues/55 -->
        <!-- fix: java.util.ServiceConfigurationError: java.net.spi.URLStreamHandlerProvider: Provider org.infinispan.commons.jdkspecific.ClasspathURLStreamHandlerProvider not found -->
        <attribute name="Multi-Release" value="true" />
      </manifest>

      <!-- распаковка всех jar-ов -->
      <!-- <zipgroupfileset dir="lib/default/" includes="*.jar" excludes="*.properties" /> -->
      <zipgroupfileset dir="" includes="*.jar" /> 

      <!-- добавление собственных классов с возможностью перекрытия классов из выше распакованных jars -->
      <fileset dir="bin" erroronmissingdir="false">
        <include name="**/*.class" />
      </fileset>
      <fileset dir="target/classes" erroronmissingdir="false">
        <include name="**/*.class" />
      </fileset>
      <fileset dir="src" erroronmissingdir="false">
        <include name="**/*.java*" />
      </fileset>
      <fileset dir="src" erroronmissingdir="false">
        <include name="**/*.properties*" />
      </fileset>
      <fileset dir="">
        <include name="README.txt" />
      </fileset>
      	
    </jar>
  	 <!-- удаление файлов подписки jar-ов: -->
  	 <!-- java.lang.SecurityException: Invalid signature file digest for Manifest main attributes -->
  	 <zip file="${ts-dest-dir-libs}/${lib.jar}">
  	  <zipfileset src="${ts-dest-dir-libs}/tmp-${lib.jar}">
      <exclude name="META-INF/*.SF"/>
      <exclude name="META-INF/*.DSA"/>
      <exclude name="META-INF/*.RSA"/>
  	  </zipfileset>
  	 </zip>
  	 <delete file="${ts-dest-dir-libs}/tmp-${lib.jar}"/>
  </target>

</project>
